package com.preparation.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.preparation.domain.Post;
import com.preparation.dto.R;
import com.preparation.service.IPostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

@CrossOrigin
@RestController
@RequestMapping("/posts")
public class PostController {

    @Autowired
    private IPostService postService;

    //查询所有帖子
    @GetMapping()
    public R getAll(){
        List<Post> postList = postService.list();
        return R.success(postList, "查询成功");
    }

    //根据id查询帖子
    @GetMapping("/{id}")
    public R getById(@PathVariable Integer id){
        Post post = postService.getById(id);
        return post != null ? R.success(post, "查询成功") : R.error();
    }

    //上传帖子
    @PostMapping
    public R addPost(@RequestBody @Valid Post post, BindingResult result){
//        R r = new R();
//        //jsr 303验证
//        if (result.hasErrors()) {
//            r.setStatus(false);
//            r.setMessage(result.getFieldError().getDefaultMessage());
//        }else {
//            boolean flag = postService.addPost(post);
//            r.setStatus(flag);
//            r.setMessage(flag ? "添加成功^_^" : "添加失败，请稍后再试-_-");
        return null;
//        }
//        return r;
    }

    //用户修改帖子信息  标题  内容  图片  类别
    @PatchMapping("/updateById")
    public R updateById(@RequestBody @Valid Post post, BindingResult result){
//        R r = new R();
//        //jsr 303验证
//        if (result.hasErrors()) {
//            r.setStatus(false);
//            r.setMessage(result.getFieldError().getDefaultMessage());
//        }else {
//            boolean flag = postService.renewById(post);
//            r.setStatus(flag);
//            r.setMessage(flag ? "修改成功^_^" : "修改失败，请稍后再试-_-");
        return null;
//        }
//        return r;
    }

    //修改信息
    @PutMapping()
    public R update(@RequestBody @Valid Post post, BindingResult result){
//        R r = new R();
//        //jsr 303验证
//        if (result.hasErrors()) {
//            r.setStatus(false);
//            r.setMessage(result.getFieldError().getDefaultMessage());
//        }else {
//            boolean flag = postService.updateById(post);
//            r.setStatus(flag);
//            r.setMessage(flag ? "修改成功^_^" : "修改失败，请稍后再试-_-");
//        }
        return null;
//        return r;
    }

    //增加浏览量
    @PatchMapping("/addViews/{id}")
    public R addViews(@PathVariable Integer id){
//        Boolean flag = postService.addViews(id);
        return null;
//        return new R(flag, flag ? "操作成功" : "操作失败，请稍后再试！");
    }

    //修改帖子状态
    @PatchMapping("/updateStatus")
    public R updateStatus(@RequestBody Post post){
//        Boolean flag = postService.updateStatus(post);
        return null;
//        return new R(flag, flag?"修改成功":"数据同步失败，请稍后再试！");
    }

    //查询我的发帖
    @GetMapping("/getByUid/{userId}")
    public R getByUid(@PathVariable Integer userId){
        return null;
//        return new R(true, postService.getByUid(userId));
    }

    //根据id删除
    @DeleteMapping("/{id}")
    public R deleteById(@PathVariable Integer id){
//        boolean flag = postService.deleteById(id);
        return null;
//        return new R(flag, flag?"删除成功":"操作失败，请稍后再试");
    }

    //关键字搜索
    @GetMapping("/getByKeyword")
    public R getByKeyword(String keyword){
//        if ("".equals(keyword.trim())){
//            return new R(false, "请输入搜索内容");
//        }
        return null;
//        return new R(true, postService.getByKeyword(keyword.trim()));
    }

    //分页查询
    @GetMapping("/{currentPage}/{pageSize}")
    public R getPage(@PathVariable int currentPage, @PathVariable int pageSize, Post post){
//        IPage<Post> page = postService.getPage(currentPage, pageSize, post);
//        //如果当前要查询的页码值大于总页码值，默认查询最后一页数据
//        if(currentPage > page.getPages()){
//            page = postService.getPage((int) page.getPages(), pageSize, post);
//        }
//        return new R(true, page);
        return null;

    }

    //置顶   取消置顶
    @PatchMapping("/sticky/{id}")
    public R sticky(@PathVariable Integer id){
//        Boolean flag = postService.sticky(id);
//        return new R(flag, flag?"操作成功":"操作失败，请稍后再试！");
        return null;
    }
}
